메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

에필로그 - J2SE의 미래, 자바의 앞날

한빛미디어

|

2002-04-23

|

by HANBIT

8,166

저자: 『IT 백두대간 자바 2, SDK 1.4』 저자 이창신

"저는 잘 모릅니다."
- 라그랑주(Lagrange, Joseph Louis. 1736.1.25~1813.4.10), 프랑스의 대수학자.
오일러와 함께 근대 수학의 견인차역할을 했다.

자바는 진화한다(Java evolves)

6년이라는 시간은 결코 짧지 않았다. 자바가 세상에 존재를 알린 것이 1995년의 따사로운 봄, 그리고 거의 7년이 흐른 지금 자바는 "멀린"이라는 이름의 새로운 존재로 난세의 IT계를 평정코자 일어서고 있다.

J2SE 1.4! 과연 무엇이 J2SE 1.4에 대한 기대를 가질 수 있게 하는지 "변화의 알파, 그리고 오메가"의 흐름을 함께 해본다. 그러기 전에 먼저 잠깐 다음과 같은 자바의 간략한 변천사 겸 구분[1]을 소개하고자 한다.
고전 자바(Classical Java) - 자바 언어(Java Language)
  JDK 1.0 (1995-) - 실험판(experimented version)
  JDK 1.1 (1997-) - 완성판(completed version)

자바 2(Java 2) - 자바 플랫폼(Java Platform)
  J2SE 1.2 (1998-) - 실험판(experimented version)
  J2SE 1.3 (2000-) - 보완판(complemented version)
  J2SE 1.4 (2002-) - 향상판(improved version)
  J2SE 1.5 (2003-) - 완성판(completed version)
고전 자바에서 자바 2로 넘어오면서 JDK는 J2SE, 즉 자바 플랫폼의 표준적인 위치로 탈바꿈한다. 위에서 제시된 연도는 각 메이저 버전의 FCS(First Customer Shipment)판 공개를 기준으로 삼았다. 보통 FCS판 이후 약 1년이 지나면 대중화되어 널리 쓰이는데, 현재 서버계에서는 J2SE 1.3이, 클라이언트계(특히 애플릿)에서는 JDK 1.1이 일반적이다. 이제 멀린(Merlin-J2SE 1.4의 별칭)을 알아보기 위해 필수불가결한 역사적 사실 몇 가지를 짚어보겠다.

자바 2의 도전과 스윙(Swing)의 대패

현재 웹 클라이언트, 달리 말하면 웹 브라우저 시장은 MS가 주도권을 잡고 있고 따라서 그 브라우저안에서 도는 애플릿도 MS의 JVM이 실제적으로 장악하고 있다. MS의 JVM은 JDK로 따지면 버전이 1.1.4정도 될 것이라고 추정하는데, 그렇지만 현실적으로는 별탈없이 다들 이런저런 서비스를 제공 중이다.

앞서 소개한 자바 기술 변천의 단계에서 볼 수 있듯이, JDK 1.1은 자바 원형의 완성판이다. 어떤 측면에서는 "가장 작지만 또한 가장 완벽한 자바 환경"이라고 할 수도 있는 셈이다. 그러나 지나치게 완벽하면 앞날에 희망이 없다. 썬은 자바를 순수한 언어에서 개발의 플랫폼으로 승화시키면서 더 이상 자바가 JDK만으로는 모든 것을 선사할 수 없음을 인정했다. J2ME, J2EE에게 각각 장래의 시장분야를 맡기면서, JDK는 자바 기술의 핵심이라는 의미의 J2SE로 이전하게 된다(이것이 바로 자바 역사상 지대한 영향을 던진 "자바 2 이동(Java 2 Migration)"이다).

자바 2는 여러모로 혁명적인, 또한 한편으로는 위험천만한 시도를 감행했다. JDK 1.1까지 따로 있었던 스윙과의 합체는 후에 두고두고 호사가들 사이에 이야기감으로 남기 충분할 것이다. 몹시도 이상적인 GUI와 그래픽스(Graphics) 처리는 플랫폼 독립성에 집착하는 자바의 맹목적성이 어떠한 참패를 불러일으킬 수 있는지를 보여주는 좋은 예이다(물론 썬에게는 쓰라렸겠지만).

간단히 말해 썬의 엔지니어들은 꿈에 부풀어있었다. 고전 자바는 나름대로 성능도 괜찮았지만, 분명 급진적인 과학자들에게는 모순 투성의 구조물로 보였음이 틀림없다. 그러나 자바는 하위호환성을 중시한다. 마음에 안 든다고 갈아엎을 수 있는 상황이 아니었던 것이다. 그래서 더욱 새로운 기술인 스윙의 자바 2 만들기에 너무 앞서간 꼴이 되어버렸다.

결과적으로 성능은 느리고 리소스는 낭비하는 극악의 스윙 GUI와 자바 2D(Java 2D) 그래픽스는 자바 2의 초판인 J2SE 1.2에서부터 시작하여 J2SE 1.3에 이르기까지 "오히려 JDK 1.1보다도 못하다"는 혹평 속에 절치부심 J2SE 1.4의 발표를 벼르게 이끌었다.

멀린은 이런 점에서 확실하게 정신을 차렸다. 썬 자바 팀은 수년간 불면증을 유발할 정도의 곤욕을 치루었으리라(고맙게도 전세계 개발자들의 질타는 그들의 밤샘 연장 근무에 자극적 도움을 주었을 게다). MS는 미워도 DirectX는 고맙다. 이상도 좋지만 현실은 더 좋다. PC 운영체계를 장악하는 윈도우를 100% 아니 120% 활용할 수 있는 자바를 탄생시킨 것이다. 스윙은 윈도우 네이티브 GUI수준으로 빠르게 돌아가고 이미지는 비디오 메모리와 직접 상대한다. 이제서야 윈도우에서 무언가 대단한 것을 짤 수 있게 된 것이다.

멀린은 스윙의 성능 강화와 강력한 그래픽 처리를 위해 자바 2D에 근본적인 개혁을 감행하였고 더불어 자바 GUI의 모체격인 AWT도 현대적으로 강화하였다.

새로운 패러다임 - XML

플랫폼 독립적인 개발 환경인 자바는 플랫폼 독립적인 문서 환경인 XML과 필연적으로 동반할 수밖에 없는 장래를 가졌다고 한다. 그러나 이 말은 나온 지 수년도 지난 것처럼 고색창연하게 들린다. 실제로 사람들은 XML을 쓰기 두려워하기 때문이다. 그만큼 XML은 실체 없이 선전만을 강요했다. 그러나 멀린은 이런 XML의 위기를 기회로 삼는다. 썬은 그동안 아파치 재단과 함께 XML의 대중화를 모색해왔고 그 결과 J2EE에서만 XML을 휘날려서는 그 기초가 약하다는 것을 깨달았다. "XML 처리 기능"의 J2SE 기본 포함은 단순한 API 추가와 격이 다르다. 자바가 그동안 다양한 플랫폼에 두루 돌아갈 수 있는 범용성으로 소프트웨어계를 풍미했다면, 지금부터는 XML을 기본적인 자료 매체로 새로운 흐름의 탄생을 예고하고 있다. 어디에서든 실행시킬 수 있는 자바와 어디서도 읽고 쓸 수 있는 XML! 멀린은 이러한 환상적인 듀오의 첫 데뷰를 가슴설레이며 기다리고 있다.

기간 기능 강화 - new I/O, Security...

실험(J2SE 1.2)과 보완(J2SE 1.3)을 거쳐 자바 2 기술은 어느 정도 안정을 찾았다. 그렇지만 그동안 IT의 세계는 그 이상의 것들을 폭발적으로 요구하기에 이르렀다. 먼저 근본적인 부분부터 살펴보겠다.

NIO(니오-new I/O)은 멀린이 가장 자랑스러워 하는 기능중의 하나이다. 자바는 편리하고 직관적인 I/O 처리로 많은 사랑을 받아왔지만, 차츰 서버측의 고도한 사용으로 인해 "폭넓은 처리 능력과 강력한 성능"마저 요구받기에 이른다. 또한 자바 기술의 세계화와 함께 지구촌 각지의 다양한 문자체계를 무리없이 소화하기 위해 유니코드 3.0을 빠르게 도입, 문자 기반의 입출력에 만전을 기하며 "민첩한 개발 환경"으로서의 면모를 확실히 보여주고 있다.

보안(Security) 기능의 강화는 무척 드라마틱하다. 멀린 이전까지 J2SE와는 별개의 기술로 알려진 자바 암호 확장(Java Cryptography Extension-JCE), 자바 보안 소켓 확장(Java Secure Socket Extension-JSSE), 자바 인증 서비스(Java Authentication and Authorization Service), 그리고 더욱 일반적인 보안 처리를 위한 GSS-API, Cert Path API까지, 미국의 암호 기술 관련 공개 제한 완화와 함께 멀린이 한아름 제공하게 되었다.

부가 기능 추가 - 로깅 API, 정규표현...

다음은 멀린에서 아주 새롭게 선보이고 있는 기술들에 대해 논해보겠다. 이번에 멀린이 포함하고 있는 이러한 신기술들은 사실 기존에 다양한 공개 버전으로 존재한 것들이지만, 썬이 확실하게 표준화시켰다는 점에서 자바의 시원스러운 면을 만끽할 수 있다. 다른 말로 하면 뭔가 필요한 기능을 구현하기 위해 인터넷을 떠돌며 이런저런 무료 공개 API를 찾아 헤매지 않아도 되고, 또 한편으로는 API의 구조가 표준적으로 제시되어 프로그램 개발에 일관성을 보장받을 수 있다.
IT 백두대간 자바 2, SDK 1.4

참고 도서

IT 백두대간 자바 2, SDK 1.4
이창신


로깅 API(Logging API)는 애플리케이션의 기본 기능에 해당하는 로그(log)관련 처리를 획기적으로 가능케 해준다. 특히 애플리케이션의 구조와 밀착한 로그 처리 방식의 제공은 멀린의 훌륭함에 빛을 더한다.

정규표현(Regular Expression)은 멀린의 신기능 언급에 빠지지 않는 멋진 API이다. 더군다나 자바의 다국어 문자 처리 기술과 융합하여 인터넷 문자 정보 검색과 활용에 최적의 환경을 제시한다. 쉬운 코드의 자바가 유연한 문자열 기능을 만났을 때의 기분을 여러분들도 느껴볼 수 있기를 바란다.

Java 3 - Java World

반성하지 않는 자에게 미래란 어처구니없는 반복뿐이다. 썬은 확실히 반성했다. 자바인의 말에 전심으로 귀를 기울였고, 자신들의 엔지니어적 아집을 용기있게 꺾었다. "진작 이랬었더라면…"하는 아쉬움마저 느낄 만큼 멀린은 빼어나다. 그리고 공은 이제 멀린의 사용자, 즉 자바 개발자에게 넘어간다. 당장 멀린을 현업에 적용시키고 득을 보기는 쉽지 않으리라. 하지만 J2SE 1.3이 서버 시장의 표준으로 이토록 빠르게 자리잡은 것을 보면, 멀린의 주류화는 오히려 기대이상으로 빠르게 진척될 전망이다.

아직 다 익히지 않은 J2SE의 API도 많은데, 벌써 1.4가 나와서 각종 신기능을 제공한다니 다소 아연한 생각이 들지도 모르겠다. 그러나 잘 생각해보면 여기에도 차이는 있다. 자바 2가 나왔을 때, 자바 2가 이렇게 빨리 현업에 적용될 지에 대해서는 아무도 예상하지 못했다. 일찍 일어나는 새에게 태양은 더 맛있는 먹이를 선사할 것이다.

멀린의 다음 버전인 J2SE 1.5의 코드명은 타이거(Tiger)이다. 자바 2의 특급 메이저 J2SE가 될 이 버전에서 썬은 자바 XML기술의 완성판을 선보일 예정이다. 또한 그동안 문법적으로 큰 변동이 없었던 자바계에 일대혁신에 가까운 형총칭성(generics)의 도입도 확정적이다. 2003년 공개 예정인 타이거로서 J2SE는 근 5년간의 긴 여정을 마치고 또하나의 완성된 자바의 모습을 보여주리라 믿는다.

다소 황당한 상상이지만, 타이거이후의 자바는 어떻게 될까? 필자는 자바가 프로그래밍 언어(Programming Language)에서 개발 환경(Developing Environment)으로 전개해온 이력에 비추어 다음 단계는 운영 공간(Service Space)로 나아갈 것이라고 감히 내다본다. 자바 2가 자바 플랫폼으로 불리었다면, 자바 3는 자바 세계(Java World)라고 불리지 않을까? 현실을 바탕으로 생명을 흉내내며 오브젝트는 빚어지고 살아간다. 프로그래머(programmer), 개발자(developer), 그리고 다음은? 자바 세계의 창조자, 자바 크리에이터(creator).
Once Java changed the world.
And now,
The world changes Java.
첨언: 이 글에서 소개하지 못한 멀린의 특징은 http://java.sun.com/j2se/1.4/docs/relnotes/features.html에 자세하게 나와 있다. 이 기사를 읽는 독자 여러분도 꼭 참고하기를 바란다.

이 기사는 『IT 백두대간 자바 2, SDK 1.4』의 에필로그(20장, 21장)를 요약 발췌한 기사로 이 책의 저자 이창신씨가 직접 작성해 주셨습니다. 더 자세한 내용은 『IT 백두대간 자바 2, SDK 1.4』를 참고하시기 바랍니다.
[1] 위의 자바 시대 구분은 현재 준비중인 자바 역사서 『커피의 전쟁』을 위해 마련한 것이다. "1부. 동 트기 전(Before the dawn)"에서는 자바의 원형인 오크의 탄생(1991)부터 자바 2의 등장(1998) 전까지 약 8년간을 다룰 예정(2003년 출간)이다. 2부는 자바 탄생 10주년인 2005년을 즈음해 공개할 생각인데, J2ME, J2SE, J2EE, 그리고 종합(Integrated Java)편을 분류할 계획이다.
TAG :
댓글 입력
자료실

최근 본 책0